/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ComExWeb.ui.beans;

import ComExWeb.dominio.Endereco;
import ComExWeb.dominio.Pessoa;
import ComExWeb.dominio.TipoEndereco;
import ComExWeb.service.PessoaService;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import java.net.Proxy.Type;
import javax.faces.event.ValueChangeEvent;
import org.alfredlibrary.ProxyConfig;
import org.alfredlibrary.utilitarios.correios.CEP;
import org.alfredlibrary.utilitarios.net.WorldWideWeb;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 *
 * @author 002824992500
 */
@ManagedBean
@ViewScoped
public class PessoaJSFBean extends BaseCRUDJSFBean {

    private static final Logger log = LoggerFactory.getLogger(PessoaJSFBean.class);
    //private static final Logger log = Logger.getLogger(PessoaJSFBean.class.getName());
    PessoaService pessoaService = new PessoaService();
//    Panel painelEndereco = new Panel();
    //   Panel painelListEndereco = new Panel();
    Endereco endereco = new Endereco();
    Boolean renderedPainel;
    Boolean renderedLisEndereco;

    public Pessoa getPessoa() {
        return getObjSelecionado();
    }

    public void setPessoa(Pessoa pessoa) {
        setObjSelecionado(pessoa);
    }
    private List<Pessoa> pessoas = new ArrayList<Pessoa>();

    public List<Pessoa> getPessoas() {
        return pessoas;
    }
    private List<Endereco> enderecos = new ArrayList<Endereco>();
    private List<TipoEndereco> tipoEnderecos = new ArrayList<TipoEndereco>();

    public List<Endereco> getEnderecos() {
        return enderecos;
    }

    /** Creates a new instance of ColaboradorJSFBean */
    public PessoaJSFBean() {
    }

    public void buscaCep(ValueChangeEvent vce) {

        ProxyConfig prox = new ProxyConfig("10.1.1.165", 3128, Type.HTTP);
        WorldWideWeb.setProxyConfig(prox);
        String[] endereco = null;

        try {
            //pesquisa no site CEP livre
            endereco = CEP.consultarEnderecoCEPLivre((String) vce.getNewValue());
            //pesquisa no site dos correios
            //String[] pessoa = CEP.consultarPessoaCorreios((String) vce.getNewValue());
            //System.out.println(pessoa[4].toString());
            getEndereco().setDsLogradouro(endereco[0].toString() + " " + endereco[1].toString());
            getEndereco().setDsBairro(endereco[2].toString());
            getEndereco().setDsCidade(endereco[3].toString());
            getEndereco().setDsEstado(endereco[4].toString());

        } catch (Exception e) {
            error("CEP não encontrado.");
            setPessoa(null);

        }




        //setSongDetail((String)detail.get(songvalue));
        //paneilPessoa.setOnToggleUpdate(null);
        //this.setTesteLogradouro("Rua virgilio vidigal");
        //  FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(testeLogradouro, vce.getNewValue());
        //FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("name","Rua virgilio" );
                /*Render the response*/ // FacesContext.getCurrentInstance().renderResponse();
    }

    @Override
    public void setup() {
        try {

            setPaginaForm("form_pessoa");
            setPaginaListagem("list_pessoa");
            setCrudClass(Pessoa.class);
            this.tipoEnderecos = getCrudService().findAll(TipoEndereco.class);
            renovarTabela();
            
        } catch (Exception e) {
            String err = "Erro na inicialização: " + e.getMessage();
            error(err);
            //log.error(err, e);
        }
    }

    @Override
    protected void renovarTabela() {

        this.pessoas = getCrudService().findAll(Pessoa.class);
    }

    public String salvaEndereco() {
      
        try {
        getEndereco().setPessoa(getPessoa());
        salvaObjeto(getEndereco());
        getPessoa().getEnderecoPessoaList().add(getEndereco());

//        painelEndereco.setRendered(false);
        //       painelListEndereco.setRendered(true);
        } catch (Exception e) {
            String err = "Erro na inicialização: " + e.getMessage();
            error(err);
            //log.error(err, e);
        }
        
        return null;


    }

    public String criaNovoEndereco() {

        setRenderedPainel(true);
        setRenderedLisEndereco(false);
        setPaginaListagem("list_pessoa");

        return null;
    }

    public PessoaService getPessoaService() {

        return pessoaService;

    }

    public void setPessoaService(PessoaService pessoaService) {
        this.pessoaService = pessoaService;
    }

    public Endereco getEndereco() {
        return endereco;
    }

    public void setEndereco(Endereco endereco) {
        this.endereco = endereco;
    }

    public List<TipoEndereco> getTipoEnderecos() {
        return tipoEnderecos;
    }

    public void setTipoEnderecos(List<TipoEndereco> tipoEnderecos) {
        this.tipoEnderecos = tipoEnderecos;
    }

    public Boolean getRenderedPainel() {
        return renderedPainel;
    }

    public void setRenderedPainel(Boolean renderedPainel) {
        this.renderedPainel = renderedPainel;
    }

    public Boolean getRenderedLisEndereco() {
        return renderedLisEndereco;
    }

    public void setRenderedLisEndereco(Boolean renderedLisEndereco) {
        this.renderedLisEndereco = renderedLisEndereco;
    }
}
